package com.hy.formula.runtime;

import java.util.Stack;

import com.hy.formula.common.Symbol;
import com.hy.formula.entity.Token;

/**
 * 解析器上下文
 * @author huangy
 * @date 2015年4月29日 下午4:47:22
 */
public class FRuntimeContext {

	private Stack<Token> opStack;
	private Stack<Token> valStack;
	/**
	 * 当前函数
	 */
	private Token currentFunc;
	
	public FRuntimeContext() {
		opStack = new Stack<Token>();
		valStack = new Stack<Token>();
	}

	public Stack<Token> getOpStack() {
		return opStack;
	}

	public Stack<Token> getValStack() {
		return valStack;
	}
	
	public void putValue(Token valToken){
		this.getValStack().push(valToken);
	}
	
	public void putOp(Token opToken){
		this.getOpStack().push(opToken);
	}
	
	public Token getValue(){
		return this.getValStack().peek();
	}
	
	public Token popValue(){
		return this.getValStack().pop();
	}
	
	public Token getOp(){
		return this.getOpStack().peek();
	}
	
	public Token popOp(){
		return this.getOpStack().pop();
	}
	
	/**
	 * 当前函数
	 * @return
	 */
	public Token currentFunc(){
		return this.currentFunc;
	}
	
	/**
	 * 设置当前函数信息
	 * @param funcToken
	 */
	public void setCurrentFunc(Token funcToken){
		this.currentFunc = funcToken;
	}
}
